package com.systop.asset.service;

import com.systop.asset.entity.Process;
import com.systop.asset.entity.ProcessRecord;
import com.systop.asset.entity.ProcessTemplate;
import com.systop.asset.entity.RestResponse;
import com.systop.asset.entity.vo.ProcessVo;

import java.io.InputStream;
import java.util.List;

/**
 * 工作流相关的操作
 */
public interface IWorkFlowService {
    /**
     * 部署流程
     * @return
     */
    public RestResponse deployProcess(ProcessTemplate template);

    /**
     * 删除流程部署
     * @param template
     */
    void deleteProcess(ProcessTemplate template);

    /**
     * 搜索流程部署文件
     * @param template 模板对象
     * @param type 文件类型
     * @return
     */
    InputStream selectBpmnFile(ProcessTemplate template, String type);

    /**
     * 资产领用申请：发起申请
     * @param process
     * @return
     */
    ProcessRecord publishProcess(Process process,ProcessTemplate template);

    /**
     * 流程审批
     * @param process 审批流程
     * @param vo 审批数据
     * @return
     */
    ProcessRecord approveProcess(Process process, ProcessVo vo);

    /**
     * 查询待审批列表
     * @param userId 用户id
     * @return 审批id列表
     */
    public List<Long> findPendingTaskList(Long userId);

    /**
     * 撤销审核
     */
    public ProcessRecord revokeProcess(Process process);
}
